/*
 * Copyright (c) 2012 swing-on-fire Team
 * 
 * This file is part of Swing-On-Fire (http://code.google.com/p/swing-on-fire), licensed under the terms of the MIT
 * License (MIT).
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
 * Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package com.google.code.swingonfire.component;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridBagLayout;

import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;

import com.google.code.swingonfire.layout.GBC;

public class HeaderPanel extends JPanel
{

    private static final long serialVersionUID = -7399329325449587941L;

    public HeaderPanel(String title, String subtitle, JComponent... components)
    {
        super(new BorderLayout());

        setOpaque(true);

        JPanel textPanel = new JPanel(new GridBagLayout());

        textPanel.setOpaque(false);
        textPanel.setBorder(BorderFactory.createEmptyBorder(4, 24, 4, 24));
        GBC gbc = new GBC(1, 2);

        JLabel titleLabel = new JLabel(title);

        titleLabel.setFont(new Font("dialog", Font.BOLD, 16));

        JLabel subtitleLabel = new JLabel(subtitle);

        textPanel.add(titleLabel, gbc);
        textPanel.add(subtitleLabel, gbc.next());

        JPanel componentPanel = new JPanel(new GridBagLayout());

        componentPanel.setOpaque(false);
        componentPanel.setBorder(BorderFactory.createEmptyBorder(4, 24, 4, 24));
        gbc = new GBC(components.length, 1);

        for (JComponent component : components)
        {
            componentPanel.add(component, gbc.next());
        }

        add(textPanel, BorderLayout.WEST);
        add(new JSeparator(), BorderLayout.SOUTH);
        add(componentPanel, BorderLayout.EAST);
    }

}
